home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 30
/
Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso
/
Aminet
/
dev
/
lang
/
SmallEiffel.lha
/
SmallEiffel
/
bin_c
/
compile_to_jvm37.c
< prev
next >
Wrap
C/C++ Source or Header
|
1998-12-22
|
18KB
|
833 lines
/*
-- ANSI C code generated by :
-- SmallEiffel The GNU Eiffel Compiler -- Release (- 0.79) --
-- Copyright (C), 1994-98 - LORIA - UHP - CRIN - INRIA - FRANCE --
-- Dominique COLNET and Suzanne COLLIN - colnet@loria.fr --
-- http://www.loria.fr/SmallEiffel --
*/
#include "compile_to_jvm.h"
T0* r23at(T23* C,T0* a1){
T0* R=NULL;
T0* _to_key=NULL;
_to_key=X50to_key(a1);
/*[IF*/
if(r333has((T333*)((C)->_feature_dictionary/*24*/),_to_key)){
R=r333at((T333*)((C)->_feature_dictionary/*24*/),_to_key);
}
/*FI]*/
return R;
}
T0* r23to_reference(T23* C){
T0* R=NULL;
R=r383at((T383*)(oBC23to_reference_memory),X52run_time_mark((C)->_current_type/*0*/));
return R;
}
T0*oBC23ci_collector=NULL;
T6 r23gt(T0* a1,T0* a2){
T6 R=0;
T0* _bcn2=NULL;
T0* _bcn1=NULL;
T0* _bf2=NULL;
T0* _bf1=NULL;
T0* _bc2=NULL;
T0* _bc1=NULL;
_bf1=(((T53*)a1))->_base_feature/*24*/;
_bf2=(((T53*)a2))->_base_feature/*24*/;
_bc1=/*X95base_class*/((T0*)(((T203*)_bf1))->_base_class/*4*/);
_bc2=/*X95base_class*/((T0*)(((T203*)_bf2))->_base_class/*4*/);
_bcn1=(((T63*)_bc1))->_name/*24*/;
_bcn2=(((T63*)_bc2))->_name/*24*/;
/*[IF*/
if(((((T70*)_bcn1))->_to_string/*0*/)==((void*)((((T70*)_bcn2))->_to_string/*0*/))){
R=r59before((T59*)(X95start_position(_bf1)),X95start_position(_bf2));
}
else if(r70is_subclass_of(((T70*)_bcn2),_bcn1)){
R=1;
}
else if(r70is_subclass_of(((T70*)_bcn1),_bcn2)){
}
else if(((((T63*)_bc1))->_parent_list/*40*/)==((void*)(NULL))){
/*[IF*/
if(((((T63*)_bc2))->_parent_list/*40*/)==((void*)(NULL))){
R=r7_px_60((T7*)((((T70*)_bcn1))->_to_string/*0*/),(((T70*)_bcn2))->_to_string/*0*/);
}
else{
R=1;
}
/*FI]*/
}
else if(((((T63*)_bc2))->_parent_list/*40*/)==((void*)(NULL))){
}
else{
R=(/*(IRF4.6count*/(((T83*)(((T81*)((((T63*)_bc2))->_parent_list/*40*/))->_list/*12*/)))->_upper/*8*//*)*/)<(/*(IRF4.6count*/(((T83*)(((T81*)((((T63*)_bc1))->_parent_list/*40*/))->_list/*12*/)))->_upper/*8*//*)*/);
}
/*FI]*/
return R;
}
void r23opcode_checkcast(T23* C){
T2 _idx=0;
T0* _ct=NULL;
_ct=(C)->_current_type/*0*/;
/*[IF*/
if(X52is_basic_eiffel_expanded(_ct)){
}
else if(X52is_native_array(_ct)){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC23tmp_string))))->_count)=(0);
/*]*/
X52jvm_target_descriptor_in(_ct,oBC23tmp_string);
_idx=r29idx_class2((T29*)(oBC12constant_pool),oBC23tmp_string);
r28opcode_checkcast((T28*)(oBC12code_attribute),_idx);
}
else if(X52is_bit(_ct)){
}
else{
_idx=r23jvm_constant_pool_index(C);
r28opcode_checkcast((T28*)(oBC12code_attribute),_idx);
}
/*FI]*/
}
/*No:RUN_CLASS.us_item*/
T0* r23get_copy(T23* C){
T0* R=NULL;
R=r23get_rf_with(C,/*X95first_name*/((T0*)/*(IRF4.6first_name*/r87item(((T87*)(((T203*)(r63get_copy((T63*)(r23class_general()))))->_names/*8*/)),1)/*)*/));
return R;
}
void r23runnable_class_invariant(T23* C){
T0* _r=NULL;
/*[IF*/
if(!((C)->_runnable_class_invariant_done/*28*/)){
C->_runnable_class_invariant_done=1;
/*[IF*/
if(r76invariant_check((T76*)(oBC12run_control))){
/*[IF*/
if((C)->_at_run_time/*8*/){
r108clear((T108*)(oBC23ci_collector));
r63collect_invariant((T63*)(r23base_class(C)),(T0*)C);
_r=r23runnable(oBC23ci_collector,(C)->_current_type/*0*/,NULL);
/*[IF*/
if((_r)!=((void*)(NULL))){
r22incr_magic_count((T22*)(oBC12small_eiffel));
{T106*n=malloc(sizeof(*n));
*n=M106;
r106make_runnable(n,_r,(C)->_current_type/*0*/,NULL);
C->_class_invariant=(T0*)n;
}
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
void r23jvm_expanded_push_default(T23* C){
T0* _rf=NULL;
r23jvm_basic_new(C);
_rf=r63expanded_initializer((T63*)(r23base_class(C)),(C)->_current_type/*0*/);
/*[IF*/
if((_rf)!=((void*)(NULL))){
r24push_expanded_initialize((T24*)(oBC12jvm),_rf);
X27mapping_jvm(_rf);
r24pop((T24*)(oBC12jvm));
}
/*FI]*/
}
void r23set_at_run_time(T23* C){
T2 _i=0;
T0* _rc=NULL;
T0* _rcd=NULL;
/*[IF*/
if(!((C)->_at_run_time/*8*/)){
C->_at_run_time=1;
C->_compile_to_c_done=0;
C->_runnable_class_invariant_done=0;
r23add_running(C,(T0*)C);
r22incr_magic_count((T22*)(oBC12small_eiffel));
/*[IF*/
if(X52is_reference((C)->_current_type/*0*/)){
_rcd=oBC22run_class_dictionary;
_i=1;
while (!((_i)>((((T342*)_rcd))->_count/*36*/))) {
_rc=r342item(((T342*)_rcd),_i);
/*[IF*/
if(r23is_running_of(C,_rc)){
r23add_running(((T23*)_rc),(T0*)C);
}
/*FI]*/
_i=(_i)+(1);
}
}
/*FI]*/
}
/*FI]*/
}
/*No:RUN_CLASS.fatal_error*/
/*No:RUN_CLASS.collect_invariant*/
/*No:RUN_CLASS.us_general*/
/*No:RUN_CLASS.set_strip_used*/
T0* r23get_rf_with(T23* C,T0* a1){
T0* R=NULL;
T0* _wbc=NULL;
T0* _fn2=NULL;
_wbc=r59base_class((T59*)(X50start_position(a1)));
_fn2=r63new_name_of((T63*)(r23base_class(C)),_wbc,a1);
/*[IF*/
if((_fn2)!=((void*)(a1))){
r21add_position(X50start_position(a1));
R=r23get_or_fatal_error(C,_fn2);
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC21explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T58*)((T58*)(oBC21positions))))->_upper)=(-(1));
/*]*/
/*]*/
}
else{
R=r23get_or_fatal_error(C,_fn2);
}
/*FI]*/
return R;
}
/*No:RUN_CLASS.current_type*/
/*No:RUN_CLASS.fz_bad_assertion*/
T0* r23class_with(T0* a1){
T0* R=NULL;
R=r22get_class(a1);
return R;
}
void r23add_running(T23* C,T0* a1){
/*[IF*/
if(((C)->_running/*12*/)==((void*)(NULL))){
C->_running=se_ma340(1,
a1);
}
else{
/*[IF*/
if(!(r340fast_has((T340*)((C)->_running/*12*/),a1))){
r340add_last((T340*)((C)->_running/*12*/),a1);
}
/*FI]*/
}
/*FI]*/
}
void r23add_client(T23* C,T0* a1){
T2 _i=0;
_i=r343fast_index_of((T343*)((C)->_actuals_clients/*40*/),a1);
/*[IF*/
if((_i)>(((T343*)((C)->_actuals_clients/*40*/))->_upper/*8*/)){
r343add_last((T343*)((C)->_actuals_clients/*40*/),a1);
}
/*FI]*/
}
/*No:RUN_CLASS.fz_dot*/
/*No:RUN_CLASS.compile_to_c_done*/
void r23error(T0* a1,T0* a2){
r21add_position(a1);
r21error((T21*)(oBC12eh),a2);
}
/*No:RUN_CLASS.class_invariant*/
void r23make(T23* C,T0* a1){
T2 _i=0;
T0* _rc=NULL;
T0* _rcd=NULL;
T0* _run_string=NULL;
C->_compile_to_c_done=1;
C->_current_type=a1;
{T343*n=malloc(sizeof(*n));
*n=M343;
r343with_capacity(n,16);
C->_actuals_clients=(T0*)n;
}
_run_string=X52run_time_mark(a1);
C->_id=r104item((T104*)(r23id_provider()),_run_string);
r342put((T342*)(oBC22run_class_dictionary),(T0*)C,_run_string);
{T333*n=malloc(sizeof(*n));
*n=M333;
/*[IRF3.4make*/r333with_capacity(n,32);
/*]*/
C->_feature_dictionary=(T0*)n;
}
r22incr_magic_count((T22*)(oBC12small_eiffel));
/*[IF*/
if(X52is_expanded(a1)){
r23set_at_run_time(C);
r63check_expanded_with((T63*)(X52base_class(a1)),a1);
}
else{
_rcd=oBC22run_class_dictionary;
_i=1;
while (!((_i)>((((T342*)_rcd))->_count/*36*/))) {
_rc=r342item(((T342*)_rcd),_i);
/*[IF*/
if((((((T23*)_rc))->_at_run_time/*8*/)&&(X52is_reference((((T23*)_rc))->_current_type/*0*/)))&&(r23is_running_of(((T23*)_rc),(T0*)C))){
r23add_running(C,_rc);
}
/*FI]*/
_i=(_i)+(1);
}
}
/*FI]*/
}
int fBC12id_provider=0;
T0*oBC12id_provider=NULL;
T0* r23id_provider(void){
if(fBC12id_provider==0){
fBC12id_provider=1;
{T104*n=malloc(sizeof(*n));
*n=M104;
r104make(n);
oBC12id_provider=(T0*)n;
}
}
return oBC12id_provider;}
void r23efnf(T23* C,T0* a1,T0* a2){
/*[IRF3.6append*/{T0* b1=((T0*)ms23_16640);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X52run_time_mark((C)->_current_type/*0*/);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms23_23892);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X50to_string(a2);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms23_7130);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T70*)((((T63*)a1))->_name/*24*/))->_to_string/*0*/;
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r23error(X50start_position(a2),((T0*)ms13_47));
}
T0* r23get_result_type(T23* C,T0* a1){
T0* R=NULL;
T0* _bc=NULL;
T0* _f=NULL;
T0* _fn2_key=NULL;
T0* _rf=NULL;
T0* _wbc=NULL;
T0* _fn2=NULL;
_wbc=r59base_class((T59*)(X50start_position(a1)));
_fn2=r63new_name_of((T63*)(r23base_class(C)),_wbc,a1);
_fn2_key=X50to_key(_fn2);
/*[IF*/
if(r333has((T333*)((C)->_feature_dictionary/*24*/),_fn2_key)){
_rf=r333at((T333*)((C)->_feature_dictionary/*24*/),_fn2_key);
R=X27result_type(_rf);
/*[IF*/
if(X52is_run_type(R)){
R=X52run_type(R);
}
else{
R=X52to_runnable(R,(C)->_current_type/*0*/);
R=X52run_type(R);
}
/*FI]*/
}
else{
_bc=r23base_class(C);
_f=r63look_up_for(((T63*)_bc),(T0*)C,_fn2);
/*[IF*/
if((_f)==((void*)(NULL))){
r23efnf(C,_bc,_fn2);
r21add_position(X50start_position(a1));
r21add_position(X50start_position(_fn2));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms23_22554);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
else{
R=X95result_type(_f);
/*[IF*/
if((R)==((void*)(NULL))){
r21add_position(X95start_position(_f));
r21add_position(X50start_position(a1));
r21add_position(X50start_position(_fn2));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms23_51011);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
else{
R=X52to_runnable(R,(C)->_current_type/*0*/);
R=X52run_type(R);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}
T0*oBC23tmp_string=NULL;
void r23afd_check(T23* C){
T0* _rt=NULL;
T0* _rc=NULL;
T2 _i=0;
T0* _rf=NULL;
r23runnable_class_invariant(C);
_i=1;
while (!((_i)>(((T333*)((C)->_feature_dictionary/*24*/))->_count/*36*/))) {
_rf=r333item((T333*)((C)->_feature_dictionary/*24*/),_i);
X27afd_check(_rf);
_rt=X27result_type(_rf);
/*[IF*/
if((_rt)!=((void*)(NULL))){
/*[IF*/
if(X52is_none(_rt)){
}
else{
_rc=X52run_class(_rt);
}
/*FI]*/
}
/*FI]*/
_i=(_i)+(1);
}
/*[IF*/
if(((C)->_class_invariant/*16*/)!=((void*)(NULL))){
r106afd_check((T106*)((C)->_class_invariant/*16*/));
}
/*FI]*/
}
T0* r23get_feature_with(T23* C,T0* a1){
T0* R=NULL;
T0* _sfn=NULL;
/*[IF*/
if(r333has((T333*)((C)->_feature_dictionary/*24*/),a1)){
R=r333at((T333*)((C)->_feature_dictionary/*24*/),a1);
}
else{
{T151*n=malloc(sizeof(*n));
*n=M151;
r151make(n,a1,NULL);
_sfn=(T0*)n;
}
R=r23get_feature(C,_sfn);
}
/*FI]*/
return R;
}
T0* r23base_class(T23* C){
T0* R=NULL;
R=X52base_class((C)->_current_type/*0*/);
return R;
}
/*No:RUN_CLASS.actuals_clients*/
T0* r23get_or_fatal_error(T23* C,T0* a1){
T0* R=NULL;
R=r23get_feature(C,a1);
/*[IF*/
if((R)==((void*)(NULL))){
r21add_position(X50start_position(a1));
/*[IRF3.6append*/{T0* b1=((T0*)ms23_6176);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X50to_string(a1);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms23_62016);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21add_type((C)->_current_type/*0*/,((T0*)ms13_47));
r21print_as_fatal_error((T21*)(oBC12eh));
}
/*FI]*/
return R;
}
/*No:RUN_CLASS.running*/
T0* r23runnable(T0* a1,T0* a2,T0* a3){
T0* R=NULL;
T0* _a=NULL;
T2 _i=0;
/*[IF*/
if(!(r108empty(((T108*)a1)))){
R=r108twin(((T108*)a1));
_i=(((T108*)R))->_upper/*8*/;
while (!((_i)==(0))) {
r22push((T22*)(oBC12small_eiffel),a3);
_a=r105to_runnable((T105*)(r108item(((T108*)R),_i)),a2);
/*[IF*/
if((_a)==((void*)(NULL))){
r23error(r105start_position((T105*)(r108item(((T108*)R),_i))),((T0*)ms13_14266));
}
else{
/*[IRF3.6put*/{T108* C1=((T108*)R);
T0* b1=_a;
T2 b2=_i;
((C1)->_storage/*0*/)[(b2)-((C1)->_lower/*12*/)]=(b1);
}/*]*/
}
/*FI]*/
r22pop((T22*)(oBC12small_eiffel));
_i=(_i)-(1);
}
}
/*FI]*/
return R;
}
void r23jvm_invoke(T23* C,T2 a1,T2 a2){
T0* _ct=NULL;
_ct=(C)->_current_type/*0*/;
{int z1=X52jvm_method_flags(_ct);
if((17==z1)){
r28opcode_invokevirtual((T28*)(oBC12code_attribute),a1,a2);
}
else {r28opcode_invokestatic((T28*)(oBC12code_attribute),a1,a2);
}}
}
void r23jvm_to_reference(T23* C){
T0* _ref_type=NULL;
_ref_type=r23to_reference(C);
r23jvm_reference_from((T23*)(X52run_class(_ref_type)),(C)->_current_type/*0*/);
}
/*No:RUN_CLASS.fz_invariant*/
void r23jvm_type_descriptor_in(T23* C,T0* a1){
r7extend(((T7*)a1),'L');
r7append(((T7*)a1),r23fully_qualified_name(C));
r7extend(((T7*)a1),'\73');
}
void r23jvm_basic_new(T23* C){
T0* _cp=NULL;
T0* _ca=NULL;
T0* _t2=NULL;
T0* _rf2=NULL;
T0* _wa=NULL;
T2 _idx=0;
T2 _i=0;
_ca=oBC12code_attribute;
_cp=oBC12constant_pool;
_idx=r23jvm_constant_pool_index(C);
r28opcode_new(((T28*)_ca),_idx);
/*[IRF3.4opcode_dup*/r28opcode(((T28*)_ca),89,1);
/*]*/
_idx=r29idx_methodref1(((T29*)_cp),_idx,((T0*)ms13_5298),((T0*)ms13_519));
r28opcode_invokespecial(((T28*)_ca),_idx,-(1));
_wa=r23writable_attributes(C);
/*[IF*/
if((_wa)!=((void*)(NULL))){
_i=(((T54*)_wa))->_upper/*12*/;
while (!((_i)==(0))) {
_rf2=r54item(((T54*)_wa),_i);
_t2=X52run_type((((T53*)_rf2))->_result_type/*28*/);
/*[IF*/
if(X52is_user_expanded(_t2)){
/*[IRF3.4opcode_dup*/r28opcode(((T28*)_ca),89,1);
/*]*/
r23jvm_expanded_push_default((T23*)(X52run_class(_t2)));
_idx=r29idx_fieldref(((T29*)_cp),_rf2);
r28opcode_putfield(((T28*)_ca),_idx,-(2));
}
else if(X52is_bit(_t2)){
/*[IRF3.4opcode_dup*/r28opcode(((T28*)_ca),89,1);
/*]*/
_idx=X52jvm_push_default(_t2);
_idx=r29idx_fieldref(((T29*)_cp),_rf2);
r28opcode_putfield(((T28*)_ca),_idx,-(2));
}
/*FI]*/
_i=(_i)-(1);
}
}
/*FI]*/
}
/*No:RUN_CLASS.at_run_time*/
T0* r23dynamic(T23* C,T0* a1){
T0* R=NULL;
T0* _up_type=NULL;
T0* _up_fn=NULL;
T0* _fn=NULL;
_up_type=/*X27current_type*/((T0*)(((T26*)a1))->_current_type/*4*/);
/*[IF*/
if((C)==((void*)(X52run_class(_up_type)))){
R=a1;
}
else{
_up_fn=/*X27name*/((T0*)(((T26*)a1))->_name/*16*/);
_fn=r63new_name_of((T63*)(r23base_class(C)),X52base_class(_up_type),_up_fn);
R=r23get_or_fatal_error(C,_fn);
}
/*FI]*/
return R;
}
/*No:RUN_CLASS.fz_35*/
/*No:RUN_CLASS.add_rf*/
T0*oBC23fully_qualified_name_memory2=NULL;
/*No:RUN_CLASS.runnable_class_invariant_done*/
void r23compile_to_jvm(T23* C){
T0* _type_ref_to_exp=NULL;
T0* _rf=NULL;
T2 _i=0;
r31put_character((T31*)(oBC12echo),'\11');
r31put_string((T31*)(oBC12echo),X52run_time_mark((C)->_current_type/*0*/));
r31put_character((T31*)(oBC12echo),'\n');
r24start_new_class((T24*)(oBC12jvm),(T0*)C);
_i=1;
while (!((_i)>(((T333*)((C)->_feature_dictionary/*24*/))->_count/*36*/))) {
_rf=r333item((T333*)((C)->_feature_dictionary/*24*/),_i);
/*[IRF3.3set_current_frame*/((((T24*)((T24*)(oBC12jvm))))->_current_frame)=(_rf);
/*]*/
X27jvm_field_or_method(_rf);
_i=(_i)+(1);
}
_type_ref_to_exp=(C)->_current_type/*0*/;
if(NULL!=(_type_ref_to_exp))switch(((T0*)_type_ref_to_exp)->id) {
case 354:
break;
default:
_type_ref_to_exp=NULL;
};/*[IF*/
if((_type_ref_to_exp)==((void*)(NULL))){
/*[IRF3.2prepare_fields*/{T0* _rf=NULL;
T2 _i=0;
_i=/*X55upper*/((T2)((T55*)(oBC24fields))->_upper/*12*/);
while (!((_i)<(0))) {
_rf=/*X55item*/((T0*)r55item((T55*)(oBC24fields),_i));
X27jvm_define(_rf);
_i=(_i)-(1);
}
}/*]*/
}
else{
r354jvm_prepare_item_field(((T354*)_type_ref_to_exp));
}
/*FI]*/
r24prepare_methods((T24*)(oBC12jvm));
r24finish_class((T24*)(oBC12jvm));
}
/*No:RUN_CLASS.fz_29*/
/*No:RUN_CLASS.nb_errors*/
T0*oBC23unqualified_name_memory=NULL;
T2 r23jvm_constant_pool_index(T23* C){
T2 R=0;
R=r29idx_class2((T29*)(oBC12constant_pool),r23fully_qualified_name(C));
return R;
}
/*No:RUN_CLASS.feature_dictionary*/
void r23store_feature(T23* C,T0* a1){
T0* _rf_key=NULL;
_rf_key=X50to_key(/*X27name*/((T0*)(((T26*)a1))->_name/*16*/));
/*[IF*/
if(r333has((T333*)((C)->_feature_dictionary/*24*/),_rf_key)){
}
else{
r333put((T333*)((C)->_feature_dictionary/*24*/),a1,_rf_key);
r22incr_magic_count((T22*)(oBC12small_eiffel));
}
/*FI]*/
}
/*No:RUN_CLASS.fully_qualified_name_memory*/
T6 r23is_running_of(T23* C,T0* a1){
T6 R=0;
T0* _t2=NULL;
T0* _t1=NULL;
/*[IF*/
if((a1)==((void*)(C))){
R=1;
}
else{
_t1=(C)->_current_type/*0*/;
_t2=(((T23*)a1))->_current_type/*0*/;
/*[IF*/
if((X52is_basic_eiffel_expanded(_t1))&&(X52is_basic_eiffel_expanded(_t2))){
}
else{
R=X52is_a(_t1,_t2);
/*[IF*/
if(!(R)){
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC21explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T58*)((T58*)(oBC21positions))))->_upper)=(-(1));
/*]*/
/*]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}
void r23prepare_strip(T23* C){
T2 _i=0;
T0* _rf2=NULL;
/*[IF*/
if((C)->_strip_used/*32*/){
_i=1;
while (!((_i)>(((T333*)((C)->_feature_dictionary/*24*/))->_count/*36*/))) {
_rf2=r333item((T333*)((C)->_feature_dictionary/*24*/),_i);
if(NULL!=(_rf2))switch(((T0*)_rf2)->id) {
case 53:
break;
default:
_rf2=NULL;
};/*[IF*/
if((_rf2)!=((void*)(NULL))){
X52used_as_reference((((T53*)_rf2))->_result_type/*28*/);
}
/*FI]*/
_i=(_i)+(1);
}
}
/*FI]*/
}
T0* r23fully_qualified_name(T23* C){
T0* R=NULL;
/*[IF*/
if(((C)->_fully_qualified_name_memory/*36*/)==((void*)(NULL))){
r7copy((T7*)(oBC23fully_qualified_name_memory2),((T24*)(oBC12jvm))->_output_name/*0*/);
r7extend((T7*)(oBC23fully_qualified_name_memory2),'\57');
r7append((T7*)(oBC23fully_qualified_name_memory2),r23unqualified_name(C));
{T7*n=malloc(sizeof(*n));
*n=M7;
r7copy(n,oBC23fully_qualified_name_memory2);
C->_fully_qualified_name_memory=(T0*)n;
}
}
/*FI]*/
R=(C)->_fully_qualified_name_memory/*36*/;
return R;
}
void r23sort_wam(T0* a1){
T6 _moved=0;
T2 _buble=0;
T2 _max=0;
T2 _min=0;
_max=(((T54*)a1))->_upper/*12*/;
_min=1;
_moved=1;
while (!(!(_moved))) {
_moved=0;
/*[IF*/
if(((_max)-(_min))>(0)){
_buble=(_min)+(1);
while (!((_buble)>(_max))) {
/*[IF*/
if(r23gt(r54item(((T54*)a1),(_buble)-(1)),r54item(((T54*)a1),_buble))){
r54swap(((T54*)a1),(_buble)-(1),_buble);
_moved=1;
}
/*FI]*/
_buble=(_buble)+(1);
}
_max=(_max)-(1);
}
/*FI]*/
/*[IF*/
if((_moved)&&(((_max)-(_min))>(0))){
_moved=0;
_buble=(_max)-(1);
while (!((_buble)<(_min))) {
/*[IF*/
if(r23gt(r54item(((T54*)a1),_buble),r54item(((T54*)a1),(_buble)+(1)))){
r54swap(((T54*)a1),_buble,(_buble)+(1));
_moved=1;
}
/*FI]*/
_buble=(_buble)-(1);
}
_min=(_min)+(1);
}
/*FI]*/
}
}
void r23falling_down(T23* C){
T2 _i=0;
T0* _rf=NULL;
_i=1;
while (!((_i)>(((T333*)((C)->_feature_dictionary/*24*/))->_count/*36*/))) {
_rf=r333item((T333*)((C)->_feature_dictionary/*24*/),_i);
X27fall_down(_rf);
_i=(_i)+(1);
}
r23prepare_strip(C);
}
void r23jvm_define_class_invariant(T23* C){
T0* _ia=NULL;
/*[IF*/
if(r76invariant_check((T76*)(oBC12run_control))){
_ia=(C)->_class_invariant/*16*/;
/*[IF*/
if((_ia)!=((void*)(NULL))){
r24define_class_invariant_method((T24*)(oBC12jvm),_ia);
}
/*FI]*/
}
/*FI]*/
}